Unity

您所在的位置:网站首页 unity light probe 合批 知乎 Unity

Unity

2024-07-11 01:30| 来源: 网络整理| 查看: 265

文章目录 问题解决SceneManager.LoadScene(string sceneName, LoadSceneMode Additive) 后调用SceneManager.UnLoadSceneAsync(string sceneName, UnloadSceneOptions options) 后调用 References

问题

QA 同学反馈说 战斗场景的 DC 突然变高了

然后 另一大佬 看了一下有部分合批失败 是因为 different light probes 导致的(如下图)

在这里插入图片描述

但是很奇怪的是,战斗场景,没有使用 LightProbes ,在 Window->Rendering->Light Expolorer->Light Probes 是没有任何 LightProbe 的,如下图 在这里插入图片描述

解决

查看了文档:Light Probes and Scene loading

在这里插入图片描述

可以了解到,LightProbes 的信息在 Additive 场景的加载或是卸载后,LightProbe 的 Tetrahedral Tessellation 信息是不会更新的,所以需要手动调用:LightProbes.Tetrahedralize or LightProbes.TetrahedralizeAsync().

LightProbes.TetrahedralizeAsync 可以查看 LightProbes.TetrahedralizeAsync

SceneManager.LoadScene(string sceneName, LoadSceneMode Additive) 后调用

如下代码:在 SceneManager.LoadScene(string sceneName, LoadSceneMode Additive) 调用后,及时调用 LightProbes.TetrahedralizeAsync(); (这个亲测过,如果大家还有其他的结论,麻烦大佬留言说一下)

// Additively load a Scene containing light probes SceneManager.LoadScene("ExampleScene", LoadSceneMode.Additive); // Force Unity to asynchronously regenerate the tetrahedral tesselation for all loaded Scenes LightProbes.TetrahedralizeAsync(); SceneManager.UnLoadSceneAsync(string sceneName, UnloadSceneOptions options) 后调用

如下代码:在 SceneManager.UnLoadSceneAsync(string sceneName, UnloadSceneOptions options) 后,在 完全 UnLoad 之后(写回调)再调用 LightProbes.TetrahedralizeAsync();(这个亲测过,如果大家还有其他的结论,麻烦大佬留言说一下)

var async = SceneManager.UnloadSceneAsync("ExampleScene", UnloadSceneOptions.Additive); async.completed += (AsyncOperation ope) => { LightProbes.TetrahedralizeAsync(); }; References LightProbes.TetrahedralizeAsync


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3